package de.htw.ds.board;


/**
 * <p>RMI service interface for a P2P checkers service</p>.
 */
public interface CheckersServiceRemote {

	/**
	 * Recursively calculates the optimum move sequence for the given color using the minimax
	 * game theory principle, i.e. taking into account the strongest possible counter moves
	 * for any possible move.
	 * @param board the board to evaluate
	 * @param color the color to move
	 * @param moveCount the number of half-moves
	 * @return the optimum move sequence
	*/
	Move[] calculateOptimumMoveSequence(final Board2 board, final Piece.Color color, final int moveCount);

	/**
	 * Routes the optimum move sequence calculation to a randomly chosen peer.
	 * @param board the board to evaluate
	 * @param color the color to move
	 * @param moveCount the number of half-moves
	 * @return the optimum move sequence
	*/
	Move[] routeOptimumMoveSequenceCalculation(final Board2 board, final Piece.Color color, final int moveCount);
}